package pl.com.photogetter;

import java.io.*;
import java.util.Properties;

import javax.swing.*;

/**
 */
public class PhotoDownloader {
	
	private GUI myGui;
	private Properties properties;
	static final String Version = "1.0";
	private Properties sysprops = System.getProperties();
	private String sep;
	public static void main(String[] args) 
	{
		try {
		    // Set System L&F
	        UIManager.setLookAndFeel(
	            UIManager.getSystemLookAndFeelClassName());
	    } 
	    catch (UnsupportedLookAndFeelException e) {
	       // handle exception
	    }
	    catch (ClassNotFoundException e) {
	       // handle exception
	    }
	    catch (InstantiationException e) {
	       // handle exception
	    }
	    catch (IllegalAccessException e) {
	       // handle exception
	    }

		PhotoDownloader myObject = new PhotoDownloader();
		
	}
	
	public PhotoDownloader() {
		
		sep = sysprops.getProperty("file.separator");
		
		checkProperties();
		myGui = new GUI(properties);
		myGui.setTitle("Photo downloader");
		Thread t = new Thread(myGui);
		t.start();
	}
	
	private void checkProperties() 
	{
		properties = new Properties();
		
		if(sysprops.getProperty("CONFIGFILE") == null) {
			File configfile = new File(sysprops.getProperty("user.home") + sep + ".photogetter");
			
			if (configfile.canRead()) {
				//Load the default configfile
				System.err.println("Załadowano ustawienia z Twojego katalogu domowego.");
				loadProperties(configfile.getAbsolutePath());
			}
			else {
				// try to create new configfile in default location
				System.err.println("Tworzenie nowego pliku konfiguracyjnego w katalogu domowym.");
				try {
					properties.setProperty("PROPERTIESFILE", configfile.getAbsolutePath());
					properties.setProperty("COMPLEX", "TRUE");
					properties.store(new BufferedOutputStream(new FileOutputStream(configfile)),"PhotoGetter Properties File");
				} catch (FileNotFoundException e1) {
					System.err.println("Nie można utworzyć pliku konfiguracyjnego: " + configfile.getAbsolutePath());
					e1.printStackTrace();
					System.exit(1);
				} catch (IOException e1) {
					System.err.println("Nie można utworzyć pliku konfiguracyjnego: " + configfile.getAbsolutePath());
					e1.printStackTrace();
					System.exit(1);
				}
				System.err.println("Utworzono plik konfiguracyjny: " + configfile.getAbsolutePath());
			}

		}
		else {
			// Load the provided configfile
			loadProperties(sysprops.getProperty("CONFIGFILE"));
		}
		
		
	}

	private void loadProperties(String configfile) {
		//User has provided a configfile, so use it
		BufferedInputStream  is;	
		try {
			is = new BufferedInputStream(new FileInputStream(configfile));
			properties.load(is);
		} catch (FileNotFoundException e1) {
			// TODO Auto-generated catch block
			System.err.println("Nie znaleziono pliku konfiguracyjnego: " + e1.toString());
			System.exit(1);
		}
		catch (IOException e2) {
			// TODO Auto-generated catch block
			System.err.println("Nie znaleziono pliku konfiguracyjnego: " + e2.toString());
			System.exit(1);
		}
		properties.setProperty("PROPERTIESFILE", configfile);
	}
}
